import Vue from 'vue'

// 对项目样式进行初始化
import 'normalize.css/normalize.css'

// 导入 ElementUI
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
// import locale from 'element-ui/lib/locale/lang/en' // lang i18n

import '@/styles/index.scss' // 全局样式

import App from './App' // 导入项目根组件
import store from './store' // 引入 Vuex
import router from './router' // 引入 路由

import '@/icons' // 引入字体图标
import '@/permission' // 权限控制(路由守卫、导航守卫)

// 引入自己封装的 PageTools 组件  进行全局注册
import PageTools from '@/components'
import directive from '@/directive'

// 使用 Vue.component 方法进行全局注册
// Vue.component('PageTools', PageTools)

// Vue.use() --- (用来注册和安装插件) 的基本使用
// 参数可以是对象、也可以是方法
// 对象作为参数时，必须提供  install 方法
Vue.use(PageTools)

// // 自定义指令
// Vue.directive('power', {
//   inserted: (el, binding) => {
//     const points = store.state.user.userInfo.roles.points
//     if (!points.includes(binding.value)) {
//       el.parentNode.removeChild(el)
//     }
//   }
// })
Vue.use(directive)

/**
 * 前端和后端并行开发
 * 但是前端开发可能比较快(约1天)
 * 后端还没开发好，不能对接接口
 * 使用 mock 模拟后端返回的数据(接口地址、参数)先行开发
 * 等后端开发好以后，只需要将地址替换成后端的接口地址，项目就完成了
 */
if (process.env.NODE_ENV === 'production') {
  const { mockXHR } = require('../mock')
  mockXHR()
}

// 挂载 Element UI
// set ElementUI lang to EN
// Vue.use(ElementUI, { locale })
// 如果想要中文版 element-ui，按如下方式声明
Vue.use(ElementUI)

Vue.config.productionTip = false

// 对 Vue 进行实例化
new Vue({
  el: '#app',
  router,
  store,
  render: h => h(App)
})
